import http from '@/axios'
import { handleSuccess, handleError } from '@/utils/responseHandler'

/**
 * 案件申请相关API
 */
export const CaseApi = {
    /**
     * 获取案件列表
     * @param {Object} query - 查询参数
     * @param {String} [query.caseName] - 案件名称
     * @param {String} [query.status] - 案件状态
     * @param {String} [query.caseType] - 案件类型
     * @returns {Promise} 案件列表Promise
     */
    getCaseList: (query) =>
        http.get('/case/list', { params: query })
            .then(res => handleSuccess(res, '获取案件列表成功'))
            .catch(error => handleError(
                error,
                '获取案件列表失败',
                '请检查查询条件或网络连接'
            )),

    /**
* 获取案件详情
* @param {String|Number} id - 案件ID
* @returns {Promise} 案件详情Promise
*/
    getCaseDetail: (id) =>
        http.get(`/case/detail/${id}`)
            .then(res => handleSuccess(res, '获取案件详情成功'))
            .catch(error => handleError(
                error,
                '获取案件详情失败',
                '案件可能不存在或您没有查看权限'
            )),

    /**
* 更新案件
* @param {String|Number} id - 案件ID
* @param {Object} data - 更新数据
* @returns {Promise} 更新结果Promise
*/
    updateCase: (id, data) =>
        http.put(`/case/update/${id}`, data)
            .then(res => handleSuccess(res, '案件更新成功'))
            .catch(error => handleError(
                error,
                '案件更新失败',
                '请检查更新数据或刷新重试'
            )),

    /**
     * 删除案件
     * @param {String|Number} id - 案件ID
     * @returns {Promise} 删除结果Promise
     */
    deleteCase: (id) =>
        http.delete(`/case/${id}`)
            .then(res => handleSuccess(res, '案件删除成功'))
            .catch(error => handleError(
                error,
                '案件删除失败',
                '您可能没有操作权限或案件状态不允许删除'
            )),
            
    /**
     * 申请案件
     * @param {Object} formData - 申请数据
     * @returns {Promise} 申请结果Promise
     */
    applyCase: (formData) =>
        http.post('/case/caseApplication', formData, {
            headers: {
                'Content-Type': 'multipart/form-data'
            }
        })
            .then(res => handleSuccess(res, '案件申请成功'))
        .catch(error => handleError(error, '案件申请','案件申请失败')),

    /**
     * 下载附件
     * @param {String|Number} id - 案件ID
     * @returns {Promise} 下载结果Promise
     */
    downloadMaterial: (id) =>
        http.get(`/case/download/${id}`, {
            responseType: 'blob'
        })
            .then(res => handleSuccess(res, '附件下载成功'))
            .catch(error => handleError(
                error,
                '附件下载失败',
                '附件可能不存在或您没有下载权限'
            )),


}